//
//  ZCommonUtils.h
//  DLNavigationTabBar
//
//  Created by xunshian on 17/1/23.
//  Copyright © 2017年 FT_David. All rights reserved.
//


#pragma mark -**************************
#pragma mark -该工具类 还不太完善 如设置 时应先判断是否为nil 为nil的话就取默认值 但是也不一定，因为可能有特殊需要 就是要为nil 所以在使用时 要带着脑子干事 要特别需要时记得变通 修改啊
#pragma mark -**************************
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

//网络状态回调
typedef void(^returnState)(NSInteger);

@interface ZCommonUtils : NSObject

#pragma mark -********************
#pragma mark -CommonUtils
#pragma mark -********************
//判断网络的方法 --需要添加库 AFNetWorking 并打开注释
//-(void)checkNet;
@property(nonatomic,copy)returnState block;

//是否是第一次进入程序
+(BOOL)isFirstBundleVersion;
//改变状态栏的颜色
+(void)changeStatusBarWhite;
+(void)changeStatusBarBlack;

#pragma mark -计算字符串的高度
//计算变高lable的高度－记得设置换行和字体大小
+(CGSize)contentSize:(UILabel *)label ;
+(CGSize)contentSizeWithStr:(NSString *)str andFont:(UIFont *)font andWidth:(CGFloat)labelWidth;

/*########*/
//计算变高lable的高度－记得设置换行和字体大小(同时可以设置lable的一些属性，如行间距，首行缩进量，段前距离，段与段间距离等)
+(CGSize)contentSizeAll:(UILabel *)label andLineSpacingHeight:(NSInteger) lineSpacingHeight;
//返回设置了attributeString的新label －－配合上面方法使用。
+(UILabel *)createAttributeLabel:(UILabel *)label andLineSpacingHeight:(NSInteger) lineSpacingHeight;
//返回字符串的高度
+ (CGFloat)textHeightWithString:(NSString *)text width:(CGFloat)width fontSize:(NSInteger)fontSize;

#pragma mark -********************
#pragma mark -UIColor+tools.h
#pragma mark -********************

+ (UIColor *)colorWithHexString:(NSString *)hexString;
+ (UIColor *)colorWithHexString:(NSString *)hexString alpha:(CGFloat)alpha;


+ (UIImage *)loadPngImageWithName:(NSString *)name;
+ (UIImage *)loadJpgImageWithName:(NSString *)name;

+ (UIImage *)createImageWithColor:(UIColor *) color;


#pragma mark -********************
#pragma mark -UIZZJ.h
#pragma mark -********************
//用类方法封装
#pragma mark --创建label
+(UILabel*)createLabelWithFrame:(CGRect)frame font:(int)font text:(NSString*)text;

+(UILabel *)createLabel:(CGRect)cgRect font:(UIFont *)font textColor:(UIColor*)textColor text:(NSString *)text backGroundColor:(UIColor *)bgColor textAlignment:(NSInteger)alignmentType;
#pragma mark --创建imageView
+(UIImageView *)createImageView:(CGRect)cgRect imageName:(NSString *)imageName;

#pragma mark --创建button
+(UIButton*)createBtnWithFrame:(CGRect)frame target:(id)target action:(SEL)action title:(NSString*)title imageName:(NSString*)imageName bgImageName:(NSString *)bgImageName;

//setbackgroundImage,setImage 2个imageView label 透明controll
+(UIButton *)createBtn:(CGRect)cgRect target:(id)target sel:(SEL)sel title:(NSString *)title titleColor:(UIColor *)titleColor font:(UIFont *)font image:(NSString *)imageName backGroundImage:(NSString *)backImage ;

//setbackgroundImage,setImage 2个imageView label 透明controll //设置内容的显示 内容的偏移量 标题的偏移量 bgBtn的图片视图的内容模式
+(UIButton *)createBtn:(CGRect)cgRect target:(id)target sel:(SEL)sel title:(NSString *)title titleColor:(UIColor *)titleColor font:(UIFont *)font image:(NSString *)imageName backGroundImage:(NSString *)backImage  ContentHorizontalAlignment:(UIControlContentHorizontalAlignment)contentHorizontalAlignment ContentEdgeInsets:(UIEdgeInsets)uIEdgeInsets TitleEdgeInsets:(UIEdgeInsets)titleEdgeInsets ImagecontentMode:(UIViewContentMode)imagecontentMode;
//自定义 Button
- (UIButton *)createBtnWithCustomType:(UIButtonType)buttonType target:(id)target selector:(SEL)selcector title:(NSString *)title titleColor:(UIColor *)titleColor titleFont:(UIFont *)font image:(NSString *)imageName highLightedImage:(NSString *)highLightImageName  bgImage:(NSString *)bGimageName hightLightedBGImage:(NSString *)highLightedBGImageName;
//#import <TencentOpenAPI/QQApi.h>
//#import "WXApi.h"
//#import "YXApi.h"
//用类方法封装
#pragma mark -创建scView
+(UIScrollView *)createScView:(CGRect)cgRect target:(id)target sizeWidth:(CGFloat)width sizeHeight:(CGFloat)height offsetX:(CGFloat)X offsetY:(CGFloat)Y horizontalIndicator:(BOOL)horizon verticalIndicator:(BOOL)vertical bounces:(BOOL)bounces pageEnable:(BOOL)pageEnable;
#pragma mark -创建tableView 默认是grouped的  可以通过typeNameDefaultGrouped 设置plain 值为字符串@"plain"
+(UITableView *)createTableView:(CGRect)cgRect dataSourceTarget:(id)target1 delegateTarget:(id)target2 horizontalIndicator:(BOOL)horizon verticalIndicator:(BOOL)vertical type:(NSString*)typeNameDefaultGrouped separatorStyle:(UITableViewCellSeparatorStyle)style;
+ (UITableView *)createTableViewWithFrame:(CGRect)frame tableViewStyle:(UITableViewStyle)tableViewStyle dataSource:(id<UITableViewDataSource>) dataSource deleaget:(id<UITableViewDelegate>) delegate bgColor:(UIColor *)bgColor tableHeaderView:(UIView *)tableHeaderView tableFooterView:(UIView *)tableFooterView  separatorStyle:(UITableViewCellSeparatorStyle )separatorStyle separatorColor:(UIColor *)separatorColor userInteractionEnabled:(BOOL) userInteractionEnabled scrollEnabled:(BOOL)scrollEnabled horizontalIndicator:(BOOL)horizon verticalIndicator:(BOOL)vertica;
#pragma mark --创建View
+(UIView*)createViewWithFrame:(CGRect)frame;
#pragma mark --创建UITextField
+(UITextField*)createTextFieldWithFrame:(CGRect)frame placeholder:(NSString*)placeholder passWord:(BOOL)YESorNO leftImageView:(UIImageView*)imageView rightImageView:(UIImageView*)rightImageView Font:(float)font;
//适配器的方法  扩展性方法
//现有方法，已经在工程里面存在，如果修改工程内所有方法，工作量巨大，就需要使用适配器的方法
+(UITextField*)createTextFieldWithFrame:(CGRect)frame placeholder:(NSString*)placeholder passWord:(BOOL)YESorNO leftImageView:(UIImageView*)imageView rightImageView:(UIImageView*)rightImageView Font:(float)font backgRoundImageName:(NSString*)imageName;
#pragma mark --创建UIScrollView
+(UIScrollView*)createScrollViewWithFrame:(CGRect)frame andContentSize:(CGSize)size;
#pragma mark --创建UIPageControl
+(UIPageControl*)createPageControlWithFrame:(CGRect)frame numberOfPages:(int)numberOfPages currentPage:(int)currentPage;
#pragma mark --创建UISlider
+(UISlider*)createSliderWithFrame:(CGRect)rect andThumbImageName:(NSString*)thumbImageName;


#pragma mark -验证手机号，邮箱 ，qq，身份证格式
//判断输入的手机号码格式是否正确
+ (BOOL)validateMobile:(NSString *)mobileNum;
//判断输入的邮箱格式是否正确
+(BOOL)checkEmail:(NSString*)email;
//判断输入的qq格式是否正确
+(BOOL)checkQQ:(NSString*)qq;
//判断输入的身份证号格式是否正确
+(BOOL)checkIdCard:(NSString*)ID;

//判断是否安装了qq，微信等
//+(NSArray *)checkAllInstalled;


#pragma mark -********************
#pragma mark -ZCControl.h
#pragma mark -********************
//使用此类，在工程pch文件里面加入该头文件，即可在工程内任意地方进行创建
//此类设计模式为最简单的工厂模式
//#import <UIKit/UIKit.h>//当无法识别UIKit框架下的东西（一般是以UI开头的）时就是缺少UIKit框架
//#import <Foundation/Foundation.h>//当无法识别Foundation框架下的东西（一般是以NS开头的）时就是缺少Foundation框架
#pragma mark --判断设备型号
+(NSString *)platformString;
#pragma mark 创建时间转换字符串
+(NSString *)stringFromDateWithHourAndMinute:(NSDate *)date;
#pragma mark --判断导航的高度64or44
+(float)isIOS7;

#pragma mark 内涵图需要的方法
+ (NSString *)stringDateWithTimeInterval:(NSString *)timeInterval;

//+ (CGFloat)textHeightWithString:(NSString *)text width:(CGFloat)width fontSize:(NSInteger)fontSize;

+ (NSString *)addOneByIntegerString:(NSString *)integerString;

#pragma mark -********************
#pragma mark -CheckCamera.h
#pragma mark -********************
#pragma mark-检查相机，摄像头，闪光灯，以及支持的媒体数据类型。image movie 以及相册相关
-(void)checkCamera;


#pragma mark -********************
#pragma mark -ClearCacheTool.h
#pragma mark -********************
/*s*
 *  获取path路径下文件夹的大小
 *
 *  @param path 要获取的文件夹 路径
 *
 *  @return 返回path路径下文件夹的大小
 */
+ (NSString *)getCacheSizeWithFilePath:(NSString *)path;

/**
 *  清除path路径下文件夹的缓存
 *
 *  @param path  要清除缓存的文件夹 路径
 *
 *  @return 是否清除成功
 */
+ (BOOL)clearCacheWithFilePath:(NSString *)path;


//获取具体文件的大小
+ (NSString *)getSizeWithData:(NSData *)data;

#pragma mark -********************
#pragma mark -GetFilePath.h
#pragma mark -********************
//获取文件夹路径
+ (NSString *)getDocumentPath;

//获取要保存的本地文件路径
+ (NSString *)getSavePathWithFileSuffix:(NSString *)suffix;



//1.自动缩放到指定大小
+(UIImage *)thumbnailWithImage:(UIImage *)image size:(CGSize)asize;
//2.保持原来的长宽比，生成一个缩略图
+(UIImage *)thumbnailWithImageWithoutScale:(UIImage *)image size:(CGSize)asize;
//iOS图片生成小缩略图
+ (UIImage *)imageCompressForSize:(UIImage *)sourceImage targetSize:(CGSize)size;


//获取录像的缩略图
+ (UIImage *)getVideoThumbnailWithFilePath:(NSString *)filePath;
//获取录像的缩略图
+ (UIImage *)getImage:(NSString *)filePath;
//获取录像的缩略图ByVideoUrl
+ (UIImage *)getImageByVideo:(NSURL *)videoUrl;
+ (UIImage *)getVideoThumbnailWithUrl:(NSURL *)videoUrl;


//在现实中需要质量压缩和体积压缩共同使用才能达到效果：
+(UIImage *)imageUserToCompressForSizeImage:(UIImage *)image newSize:(CGSize)size;

#pragma mark -********************
#pragma mark -ViewHierarchyLogging.h  一般做为view的类别 方法引入
#pragma mark -********************
//遍历一个view的所有子视图
//-(void)logViewHierarchy;
//
//-(void)logViewHierarchy1;

#pragma mark -********************
#pragma mark -ConstmBt.h  自定义 按钮点击 响应范围 一般是重写控件的 该方法
#pragma mark -********************


#pragma mark -********************
#pragma mark -TImeChange.h
#pragma mark -********************
-(NSString*)timeChange:(NSString*)timeStr;
+(NSInteger)isRunYear:(NSInteger)year; //是否是闰年
+(NSInteger)getTimeFrom1970; //获得1970后的毫秒
+(NSString*)getNowTime; // 获得当前的时间
+(NSString*)getSecondTominutesOrHoour:(NSInteger)time;  //将秒数转成分钟或者小时
+(NSString*)javaSecondToHourWithStyle:(NSString*)style andJavaTime:(long)time;//后台时间专成指定时间
+(NSString*)javaTimeToWeekOrDayOrHourWithTime:(long)time; // 后台时间专程转成周几（一周以内星期几，一天以内几点几分，今天显示）
+(NSString*)getNowTimewithStyle:(NSString*)style;// 获得当前时间

//根据毫秒来的到几岁 返还虚岁 一岁半算1岁
+(NSString*)getAgeWithTime:(long)time;

//根据年月日专成毫秒数
+(NSInteger)getTimeToSeconds:(NSString*)time andStyle:(NSString*)style;

// 获得当前哪一年
+(NSString*)getnowYear;


@end
